对于业务文档中每一个的流程定义,都会通过下列部署执行初始化属性 key, version, name 和 id:
- XML 文件中流程定义(流程模型)的 id 属性被当做是流程定义的 key属性。
- 带有特定 key 的流程定义在第一次部署的时候,将会自动分配版本号为1,对于之后部署相同 key 的流程定义时候,这次部署的版本号将会设置为比当前最大的版本号大1的值。该 key 属性被用来区别不同的流程定义。
看下面示例
当部署了这个流程定义之后,在数据库中的流程定义看起来像这样:
假设我们现在部署用一个流程的最新版本号(例如 改变用户任务),但是流程定义的 id 保持不变。 流程定义表将包含以下列表信息:
Table 6.2.
当 runtimeService.startProcessInstanceByKey(“myProcess”) 方法被调用时,它将会使用流程定义版本号为2的,因为这是最新版本的流程定义。可以说每次流程定义创建流程实例时,都会默认使用最新版本的流程定义。
表格如下:
Table 6.3.
注意:为何新流程的 key 与我们的第一个流程是不同的。尽管流程定义的名称是相同的(当然,我们应该也是可以改变这一点的),Activiti 仅仅只考虑 id 属性判断流程。因此,新的流程定义部署的版本号为1。